home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / SCIENTIF / 1080.ZIP / SOURCE.ARC / H2O2.BAS < prev   
BASIC Source File  |  1987-12-30  |  48KB  |  1,257 lines

  1. REM ************************************************************
  2. REM *                                                          *
  3. REM *                 H2O2  VERSION 3.12                       *
  4. REM *                                                          *
  5. REM *             PROGRAM BY KERRY HICKS, MS                   *
  6. REM *                                                          *
  7. REM *                  (c) DEC. 1987                           *
  8. REM *                                                          *
  9. REM ************************************************************
  10.  
  11. REM ************************************************************
  12. REM *                                                          *
  13. REM *       SOME OF THE MORE IMPORTANT GLOBAL VARIABLES:       *
  14. REM *                                                          *
  15. REM *    SPECIES  NUMBER OF DISTINCT CONSTITUENTS (SPECIES)    *
  16. REM *    N(I)     NUMBER OF MOLES OF ITH CONSTITUENT           *
  17. REM *    N$(I)    NAME OF ITH CONSTITUENT                      *
  18. REM *    X(I)     MOLE FRACTION OF ITH CONSTITUENT             *
  19. REM *    XC(I)    AS ABOVE, CHAMBER CONDITIONS                 *
  20. REM *    XE(I)    AS ABOVE, EXIT FOR EQUILIBRIUM FLOW          *
  21. REM *    N        INTERMEDIATE CALC. OF TOTAL # OF MOLES       *
  22. REM *    NN       INTERMEDIATE/FINAL CALC. OF TOTAL # OF MOLES *
  23. REM *    T        TEMP INDEX (ACTUAL TEMP=T*100                *
  24. REM *             (EXCEPTION:  USED AS DUMMY TEMP IN SEVERAL   *
  25. REM *             PLACES WHILE INTERPOLATING BETWEEN INTEGRAL  *
  26. REM *             VALUES.)                                     *
  27. REM *    TC       ADIABATIC FLAME TEMP INDEX                   *
  28. REM *    TE       EXIT TEMP FOR EQUILIBRIUM FLOW               *
  29. REM *    T1 & T2  INDICIES OF TEMPS BRACKETING TC OR TE        *
  30. REM *    TMIN     LOWER TEMPERATURE OF DATA SUPPLIED/100       *
  31. REM *    TMAX     UPPER TEMPERATURE OF DATA SUPPLIED/100       *
  32. REM *    LIMIT    THE LOWER TEMPERATURE/100 THAT CAN BE SAFELY *
  33. REM *             USED W/O RISKING A MATHEMATICAL OVERFLOW     *
  34. REM *    P        PRESSURE OF COMBUSTION CHAMBER               *
  35. REM *    PE       EXIT PRESSURE FOUND IN FROZEN FLOW CALC.     *
  36. REM *    NP       (N/P)^.5 -- SHORTHAND FOR A COMMON TERM      *
  37. REM *    K(T,I)   KP OF ITH CONSTITUENT AT TEMP T              *
  38. REM *    Q        SUM OF HEATS OF VAPORIZATION AND SUM OF Q    *
  39. REM *             NEEDED TO RAISE REACTANTS FROM VAP. POINT    *
  40. REM *             TO 298 K  (Q1+Q2 IN THE NOTES)               *
  41. REM *    QLOW     QNET CORRESPONDING TO T1                     *
  42. REM *    QHIGH    QNET CORRESPONDING TO T2                     *
  43. REM *    QO(I)    Q LEAVING THE SYSTEM FROM FORMATION OF ITH   *
  44. REM *             CONSTITUENT  (Q3(I)'S IN THE NOTES)          *
  45. REM *    Q3       NEGATIVE OF THE SUM OF QO(I)'S  (QOUT IN THE *
  46. REM *             NOTES)                                       *
  47. REM *    QI(T,I)  Q NEEDED TO RAISE ITH COMPONENT FROM 298 K   *
  48. REM *             TO T  (Q4(I,T)'S IN THE NOTES)               *
  49. REM *    QIN      SUM OF QI(T,I)'S AT A GIVEN TEMP AND Q (QIN  *
  50. REM *             IN THE NOTES)                                *
  51. REM *    QNET     SUM OF Q'S INTO THE SYSTEM (Q1+Q2+Q4-Q3 IN   *
  52. REM *             THE NOTES)                                   *
  53. REM *    LASTQ    QNET FROM THE PREVIOUS TEMP                  *
  54. REM *    S(T,I)   ENTROPY OF ITH SPECIES AT TEMP T             *
  55. REM *    SC       ENTROPY OF COMBUSTION CHAMBER                *
  56. REM *    SE       ENTROPY AT CURRENT TEMP                      *
  57. REM *    SLOW     SNET CORRESPONDING TO T1                     *
  58. REM *    SHIGH    SNET CORRESPONDING TO T2                     *
  59. REM *    SNET     MW*SC-MC*SE                                  *
  60. REM *    MW       MOLECULAR WEIGHT AT CURRENT TEMP             *
  61. REM *    MC       MOLECULAR WEIGHT OF COMBUSTOR MIX            *
  62. REM *    ME       MOLECULAR WEIGHT OF EXHAUST GAS (EQ. FLOW)   *
  63. REM *    R        GAS CONSTANT USED AS BOTH UNIVERSAL AND AS   *
  64. REM *             CONSTANT FOR COMPOSITION UNDER CONSIDERATION *
  65. REM *                                                          *
  66. REM ************************************************************
  67.  
  68. REM ************************************************************
  69. REM *                                                          *
  70. REM *      SOME OF THE MORE IMPORTANT LOCAL VARIABLES:         *
  71. REM *                                                          *
  72. REM *    XL & XR  USED IN BISECTION SUBROUTINE                 *
  73. REM *    TL & TR  USED IN ROUTINE FOR TC AND TE                *
  74. REM *    NUMIT    FAIL-SAFE -- COUNTS ITERATIONS TO PREVENT    *
  75. REM *             INFINITE LOOPS                               *
  76. REM *    I & J    USED AS INDICES THROUGHOUT PROGRAM           *
  77. REM *                                                          *
  78. REM ************************************************************
  79.  
  80. REM ************************************************************
  81. REM *                                                          *
  82. REM *        DETAILS ON N(I) AND X(I)                          *
  83. REM *                                                          *
  84. REM *    I=1    DIATOMIC HYDROGEN                              *
  85. REM *    I=2    DIATOMIC OXYGEN                                *
  86. REM *    I=3    WATER                                          *
  87. REM *    I=4    MONATOMIC HYDROGEN                             *
  88. REM *    I=5    MONATOMIC OXYGEN                               *
  89. REM *    I=6    HYDROXYL (OH)                                  *
  90. REM *                                                          *
  91. REM ************************************************************
  92.  
  93. REM ************************************************************
  94. REM *                                                          *
  95. REM *               USER DEFINED FUNCTIONS                     *
  96. REM *                                                          *
  97. REM *    FNA      INTERPOLATES BETWEEN VALUES                  *
  98. REM *    FNBX     INTERMEDIATE VALUE TO BE USED IN FNO2        *
  99. REM *    FNO2     NUMBER OF MOLES OF O2 -- ALSO EQUAL TO N(2)  *
  100. REM *    FNH2O    NUMBER OF MOLES OF H2O -- ALSO EQUAL TO N(3) *
  101. REM *    FNH      NUMBER OF MOLES OF H -- ALSO EQUAL TO N(4)   *
  102. REM *    FNO      NUMBER OF MOLES OF O -- ALSO EQUAL TO N(5)   *
  103. REM *    FNOH     NUMBER OF MOLES OF OH -- ALSO EQUAL TO N(6)  *
  104. REM *    FNAR     AREA RATIO FROM GAMMA AND EXIT MACH NUMBER   *
  105. REM *                                                          *
  106. REM ************************************************************
  107.  
  108. REM ************************************************************
  109. REM *                                                          *
  110. REM *               MAJOR PROGRAM SECTIONS                     *
  111. REM *                                                          *
  112. REM *   LINE/LABEL:               DESCRIPTION:                 *
  113. REM *   -----------               ------------                 *
  114. REM *    1000-1490            DATA INPUT AND SETUP             *
  115. REM *                                                          *
  116. REM *    1500-1820            ADIABATIC FLAME TEMP CALCS       *
  117. REM *                                                          *
  118. REM *    2000-2450            FROZEN FLOW CALCULATIONS         *
  119. REM *                                                          *
  120. REM *    2500-2995            EQUILIBRIUM FLOW CALCULATIONS    *
  121. REM *                                                          *
  122. REM *    3500-3745            COMPOSITION SUBROUTINE           *
  123. REM *                                                          *
  124. REM *    4000-4045            QNET SUBROUTINE                  *
  125. REM *                                                          *
  126. REM *    4500-4680            PRINT SUBROUTINE                 *
  127. REM *                                                          *
  128. REM *    5000-5035            MOLECULAR WEIGHT SUBROUTINE      *
  129. REM *                                                          *
  130. REM *    5500-5545            ENTROPY SUBROUTINE               *
  131. REM *                                                          *
  132. REM *    6000-6125            MACH NUMBER SUBROUTINE           *
  133. REM *                                                          *
  134. REM *    OOPS                 ABORT AND DUMP ROUTINE           *
  135. REM *                                                          *
  136. REM *    TCALC                THRUST CALCULATION               *
  137. REM *                                                          *
  138. REM ************************************************************
  139.  
  140. 1000 COLOR 1,7,7 : CLS
  141.      PRINT "                      H    H            OOOOO"
  142.      PRINT "                      H    H           O     O"
  143.      PRINT "                      HHHHHH    222    O     O    222"
  144.      PRINT "                      H    H   2   2   O     O   2   2"
  145.      PRINT "                      H    H       2    OOOOO        2"
  146.      PRINT "                               2222              2222"
  147.      PRINT "                               2                 2"
  148.      PRINT "                               22222             22222"
  149.      PRINT " "
  150.      PRINT " "
  151.      PRINT " "
  152.      PRINT " "
  153.      PRINT "               HYDROGEN/OXYGEN ROCKET ENGINE ANALYSIS PROGRAM"
  154.      PRINT
  155.      PRINT "                                Version 3.12"
  156.      PRINT
  157.      PRINT "                             (c) December, 1987"
  158.      PRINT
  159.      PRINT "                    Software Package by Kerry Hicks, MS"
  160.      PRINT
  161.      PRINT "               Free Software for Poor Engineering Students"
  162.      PRINT : PRINT
  163.      PRINT " Hit Any Key to Continue......."; : COLOR 7
  164.      A$=""
  165. 1010 A$=INKEY$
  166.      IF A$="" THEN 1010
  167.      COLOR 7,1,1
  168.      CLS
  169.      ON ERROR GOTO OOPS
  170. DIM K(60,7), QO(7), QI(60,7), N(7), X(7), S(60,7), N$(7)
  171. DIM M(7), CP(60,7), XC(7), XE(7)
  172.      PRINT
  173. DEFINT I-J
  174.      REM ****************INSERT FORMULAS HERE**********************
  175. DEF FNA(X1,Y1,X2,Y2,X)=Y1+((X-X1)/(X2-X1))*(Y2-Y1)
  176. DEF FNBX(K3,K6,N1,NP)=(2*K3*N1*(NP^-1))+(K6*N1^.5)
  177. DEF FNO2(K4,N1,B,NP)=((2*MH2-(2*N1)-(K4*NP*N1^.5))/B)^2
  178. DEF FNW(K3,N1,N2,NP)=K3*N1*(NP^-1)*N2^.5
  179. DEF FNH(K4,N1,NP)=K4*NP*N1^.5
  180. DEF FNO(K5,N2,NP)=K5*NP*N2^.5
  181. DEF FNOH(K6,N1,N2)=K6*(N1*N2)^.5
  182. DEF FNAR(M,G)=(1/M)*((2/(G+1))*(1+((G-1)/2)*M^2))^((G+1)/(2*(G-1)))
  183.      TMIN=1 : TMAX=60 : SPECIES=6 : LIMIT=TMIN : IERROR=0
  184.      R=1.9872
  185.      REM ***************READ QO'S  (Q3 IN NOTES)*******************
  186.      READ QO(1), QO(2), QO(3), QO(4), QO(5), QO(6)
  187.      REM ***READ KP(T)'S, QI(T)'S (KP'S AND Q4'S IN THE NOTES),
  188.      REM S(T)'S AND CP(T)'S***
  189.      FOR I=1 TO SPECIES
  190.       READ N$(I), M(I)
  191.         PRINT " READING DATA FOR ";N$(I)
  192.     FOR T=TMIN TO TMAX
  193.            READ K(T,I), QI(T,I), S(T,I), CP(T,I)
  194.      REM CHECK IF 10^(LOG K) WILL CAUSE AN OVERFLOW
  195.            IF ABS(K(T,I))<35 THEN 1245
  196.              IF LIMIT<=T THEN LIMIT=T+1
  197.              K(T,I)=-99 : GOTO 1250
  198. 1245       K(T,I)=10^K(T,I)
  199. 1250    NEXT T
  200.         PRINT
  201.      NEXT I
  202.      REM IF LIMIT>1 THEN WE IGNORED SOME DATA.  PRINT WARNING IF SO.
  203.      IF LIMIT=1 THEN 1310
  204.        PRINT
  205.        PRINT " WARNING--TEMPERATURES < ";LIMIT*100;" KELVIN MAY CAUSE A MATHEMATICAL"
  206.        PRINT " OVERFLOW.  IF TEMPERATURES THIS LOW ARE NEEDED";CHR$(44);" THE PROGRAM"
  207.        COLOR 20 : PRINT " COULD"; : COLOR 7
  208.        PRINT " FAIL...BUT IT IS UNLIKELY THAT TEMPERATURES THIS LOW WILL"
  209.        PRINT " BE NEEDED FOR CONVENTIONAL ENGINES."
  210.        PRINT
  211. 1310 INPUT " OUTPUT FILE (ENTER LPT1: FOR PRINTER)";A$
  212.      IF A$="" THEN PRINT " BAD FILE NAME!" : GOTO 1310
  213.      OPEN A$ FOR OUTPUT AS #1
  214.      PRINT #1, " "
  215.      PRINT #1, TAB(26) "H    H            OOOOO         "
  216.      PRINT #1, TAB(26) "H    H           O     O        "
  217.      PRINT #1, TAB(26) "HHHHHH    222    O     O    222 "
  218.      PRINT #1, TAB(26) "H    H   2   2   O     O   2   2"
  219.      PRINT #1, TAB(26) "H    H       2    OOOOO        2"
  220.      PRINT #1, TAB(26) "         2222              2222 "
  221.      PRINT #1, TAB(26) "         2                 2    "
  222.      PRINT #1, TAB(26) "         22222             22222"
  223.      PRINT #1, " "
  224.      PRINT #1, " "
  225.      PRINT #1, " "
  226.      PRINT #1, " "
  227.      PRINT #1, TAB(20) "HYDROGEN/OXYGEN ROCKET ENGINE ANALYSIS PROGRAM"
  228.      PRINT #1, " "
  229.      PRINT #1, TAB (37) "Version 3.12"
  230.      PRINT #1, " "
  231.      PRINT #1, TAB(34) "(c) December, 1987"
  232.      PRINT #1, " "
  233.      PRINT #1, TAB(25) "Software Package by Kerry Hicks, MS"
  234.      PRINT #1, " "
  235.      PRINT #1, " "
  236.      PRINT #1, " "
  237.      PRINT #1, " "
  238.      PRINT #1, " "
  239.      PRINT #1, " "
  240.      PRINT #1, " "
  241.      PRINT #1, " "
  242. 1345 INPUT " ENTER AN IDENTIFYING TITLE FOR OUTPUT";A$
  243.      IF A$="" THEN A$="An Untitled Engine."
  244.      INPUT " CHAMBER PRESSURE IN ATMOSPHERES";P
  245. 1350 INPUT " NOZZLE THROAT AREA IN SQUARE FEET";ATHROAT
  246.      IF ATHROAT<=0 THEN
  247.     PRINT
  248.     PRINT " You have entered a number which is physically impossible."
  249.     PRINT
  250.     GOTO 1350
  251.      END IF
  252. 1360 INPUT " NOZZLE EXIT AREA IN SQUARE FEET";AEXIT
  253.      IF AEXIT<=0 THEN
  254.     PRINT
  255.     PRINT " You have entered a number which is physically impossible."
  256.     PRINT
  257.     GOTO 1360
  258.      END IF
  259.      AREAR=AEXIT/ATHROAT
  260.      IF AREAR<1 THEN
  261.     PRINT
  262.     PRINT " Your nozzle converges -- this version of H2O2 cannot handle this."
  263.     PRINT " Start Over!"
  264.     PRINT
  265.     GOTO 1350
  266.      END IF
  267.      PRINT " MASS FLOW RATIO OF OXYGEN TO HYDROGEN (EXAMPLE:  FOR A MASS"
  268.      PRINT " FLOW RATIO OF 5:1 ENTER 5,1)"; : INPUT A,B
  269.      MH2=(15.8740*B)/A : NN=MH2 : Q=(MH2*.216+1.5907)+(MH2*1.86924+1.53)
  270.      A$="Analysis of "+A$
  271.      IF LEN(A$)<=84 THEN
  272.     CEN=(85-LEN(A$))/2
  273.     PRINT #1, TAB(CEN) A$
  274.      ELSE
  275.     PRINT #1, A$
  276.      END IF
  277.      PRINT #1, " "
  278.      A$="Study Initiated on "+date$+" at "+time$
  279.      CEN=(85-LEN(A$))/2
  280.      PRINT #1, TAB(CEN) A$
  281.      PRINT #1, " " : PRINT #1, " " : PRINT #1, " "
  282.      PRINT #1, "ENGINE SPECS:"
  283.      PRINT #1, "-------------"
  284.      PRINT #1, " "
  285.      PRINT #1, "AREA OF NOZZLE THROAT ";
  286.      PRINT #1, USING "#.####^^^^";ATHROAT;
  287.      PRINT #1, " SQUARE FEET"
  288.      PRINT #1, "AREA OF NOZZLE EXIT ";
  289.      PRINT #1, USING "#.####^^^^";AEXIT;
  290.      PRINT #1, " SQUARE FEET"
  291.      PRINT #1, "AREA RATIO:  ";
  292.      PRINT #1, USING "####.##";AREAR;
  293.      PRINT #1, " : 1"
  294.      PRINT #1, "CHAMBER PRESSURE ";
  295.      PRINT #1, USING "#.####^^^^";P;
  296.      PRINT #1, " ATM"
  297.      PRINT #1, "OXYGEN TO HYDROGEN MASS FLOW RATE:  ";
  298.      PRINT #1, USING "###.###";A;
  299.      PRINT #1, " : ";
  300.      PRINT #1, USING "###.###";B
  301.      PRINT #1, " "
  302. 1490 CLS
  303. 1500 REM **********************************************************
  304.      REM *       ADIABATIC FLAME TEMPERATURE CALCULATIONS         *
  305.      REM **********************************************************
  306.      REM
  307.      REM FIND ADIABATIC FLAME TEMPERATURE (TC)
  308.      FOR I=1 TO 11 : PRINT : NEXT I
  309.      COLOR 27
  310.      PRINT "                 Working on Adiabatic Flame Temperature (TC)."
  311.      COLOR 7
  312.      T1=LIMIT : T2=TMAX
  313. 1550 IF T2-T1 < 2 THEN 1585
  314.      T=INT((T1+T2)/2)
  315.      GOSUB 3500 : GOSUB 4000
  316.      IF QNET>0 THEN T2=T : IFLAG=2 : GOTO 1550
  317.      IF QNET<0 THEN T1=T : IFLAG=1 : GOTO 1550
  318.      REM ACCIDENTALLY FOUND QNET=ZERO (TC)
  319.      TC=T : GOTO 1745
  320. 1585 IF IFLAG<>2 THEN 1605
  321.        QHIGH=QNET
  322.        T=T1 : GOSUB 3500 : GOSUB 4000 : QLOW=QNET
  323.      GOTO 1615
  324. 1605   QLOW=QNET
  325.        T=T2 : GOSUB 3500 : GOSUB 4000 : QHIGH=QNET
  326. 1615 REM
  327.      REM ITERATE BETWEEN THE ENCLOSING TEMPERATURES TO GET TC
  328.      REM
  329.      TL=T1 : TR=T2
  330.      REM INTERPOLATE BETWEEN Q(T1) AND Q(T2) TO GET A FIRST GUESS
  331.      REM FOR ADIABATIC FLAME TEMP -- TC
  332.      TC=FNA(QLOW,T1,QHIGH,T2,0)
  333.      REM ENTER A "WHILE-DO" LOOP TO ITERATE ON TC UNTIL ABS(QNET) IS
  334.      REM LESS THAN 5E-04 OR TR-TL IS LESS THAN .005 (ACCURATE TO 1 DEGREE)
  335. 1660   IF TR-TL<.005 THEN 1745
  336.        T=0 : REM DUMMY TEMP
  337.        REM INTERPOLATE BETWEEN JANNAF TABLE VALUES
  338.        FOR J=1 TO SPECIES
  339.          K(0,J)=FNA(T1,K(T1,J),T2,K(T2,J),TC)
  340.        NEXT J
  341.        REM *****FIND COMPOSITION AT THIS TEMP*****
  342.        GOSUB 3500
  343.        REM *****FIND QNET AT THIS TEMP*****
  344.        FOR J=1 TO SPECIES
  345.          QI(0,J)=FNA(T1,QI(T1,J),T2,QI(T2,J),TC)
  346.        NEXT J
  347.        GOSUB 4000
  348.      REM ADJUST OUR GUESS AT TC AND DO THIS ALL OVER AGAIN
  349.      IF ABS(QNET)<.0005 THEN 1745
  350.        IF QNET>0 THEN TR=TC : TC=(TL+TR)/2 : GOTO 1660
  351.        IF QNET<0 THEN TL=TC : TC=(TL+TR)/2 : GOTO 1660
  352. 1745 REM QNET IS EITHER ZERO OR CLOSE TO IT, SO WE MUST HAVE FOUND TC
  353.      REM SAVE THE IMPORTANT VALUES:
  354.      T=TC : MC=MW : FOR I=1 TO SPECIES : XC(I)=X(I) : NEXT I
  355.      FOR I=1 TO SPECIES
  356.        S(0,I)=FNA(T1,S(T1,I),T2,S(T2,I),TC)
  357.      NEXT I
  358.      REM *****FIND SC*****
  359.      PTEMP=PE : PE=P : GOSUB 5500 : PE=PTEMP
  360.      SC=SE : REM SAVE THE VALUE
  361.      REM PRINT THE DATA FOR TC
  362.      PRINT #1, " "
  363.      PRINT #1, "ADIABATIC FLAME TEMPERATURE:  ";
  364.      PRINT #1, USING "####.#";TC*100;
  365.      PRINT #1, " Kelvin"
  366.      PRINT #1, " "
  367.      PRINT #1, " "
  368.      PRINT #1, TAB(17) "**********  COMBUSTION CHAMBER DETAILS  ***********"
  369.      PRINT #1, TAB(17) "            --------------------------"
  370.      PRINT #1, " "
  371. 1820 T=TC : PE=P : GOSUB 4500 : PE=PTEMP
  372.      T=0 : REM DUMMY VALUE
  373.      FOR J=1 TO SPECIES
  374.        CP(0,J)=FNA(T1,CP(T1,J),T2,CP(T2,J),TC)
  375.      NEXT J
  376.      CPBAR=0
  377.      FOR J=1 TO SPECIES
  378.        CPBAR=CPBAR+CP(0,J)*XC(J)
  379.      NEXT J
  380.      GC=CPBAR/(CPBAR-1.9872)
  381.      PRINT #1, " "
  382.      PRINT #1, "Ratio of specific heats:  ";
  383.      PRINT #1, USING "##.###";GC
  384.      PRINT #1, " "
  385.      PRINT #1, " "
  386. 2000 REM ****************************************************
  387.      REM *              FROZEN FLOW CALCULATIONS            *
  388.      REM ****************************************************
  389.      CLS
  390.      FOR I=1 TO 11 : PRINT : NEXT I
  391.      COLOR 27
  392.      PRINT "                    Working on Frozen Flow Calculations."
  393.      COLOR 7
  394.      PRINT #1, " "
  395.      PRINT #1, TAB(18) "***********  FROZEN FLOW CALCULATIONS  **********"
  396.      PRINT #1, TAB(18) "             ------------------------"
  397.      PRINT #1, " "
  398.      T=0 : REM DUMMY VALUE
  399.      FOR J=1 TO SPECIES
  400.        CP(0,J)=FNA(T1,CP(T1,J),T2,CP(T2,J),TC)
  401.      NEXT J
  402.      CPBAR=0
  403.      FOR J=1 TO SPECIES
  404.        CPBAR=CPBAR+CP(0,J)*XC(J)
  405.      NEXT J
  406.      GC=CPBAR/(CPBAR-1.9872)
  407.      GOSUB 6000
  408.      TEP=TC/(1+((GC-1)/2)*MACH^2)
  409.      T=0 : T1=INT(TEP) : T2=INT(TEP)+1
  410.      FOR J=1 TO SPECIES
  411.        K(0,J)=FNA(T1,K(T1,J),T2,K(T2,J),TEP)
  412.        CP(0,J)=FNA(T1,CP(T1,J),T2,CP(T2,J),TEP)
  413.      NEXT J
  414.      CPBAR=0
  415.      FOR J=1 TO SPECIES
  416.        CPBAR=CPBAR+CP(0,J)*XC(J)
  417.      NEXT J
  418.      GE=CPBAR/(CPBAR-1.9872)
  419.      GAMMA=(GE+GC)/2
  420.      PRINT #1, "Average ratio of specific heats:  ";
  421.      PRINT #1, USING "##.###";GAMMA
  422.      ATHROAT=ATHROAT*.092903 : REM UNIT CONVERSION
  423.      R=8314.34/MC
  424.      PC=P*101325!
  425.      TEMP1=(GAMMA+1)/(2*(GAMMA-1))
  426.      TEMP2=ATHROAT*PC*SQR(GAMMA)
  427.      TEMP3=SQR(R*TC*100)
  428.      TEMP4=1+(GAMMA-1)/2
  429.      MDOT=(TEMP2/TEMP3)*TEMP4^-TEMP1
  430.      REM UNIT CONVERSION
  431.      MDOT=MDOT/.45359237#
  432.      PRINT #1, "Mass flow rate (mdot):  ";
  433.      PRINT #1, USING "#.####^^^^";MDOT;
  434.      PRINT #1, " lbm/sec."
  435.      REM LIE TO SUBROUTINE
  436.      GC=GAMMA : REM LIE TO SUBROUTINE
  437.      GOSUB 6000
  438.      TEMP1=GAMMA/(GAMMA-1)
  439.      TEMP2=1+((GAMMA-1)/2)*MACH^2
  440.      PE=P*TEMP2^-TEMP1
  441.      PRINT #1, "Pressure at exit:  ";
  442.      PRINT #1, USING "#.####^^^^";PE;
  443.      PRINT #1, " atm.  (";
  444.      PRINT #1, USING "#.####^^^^";PE*14.696;
  445.      PRINT #1, " psia)"
  446.      TE=(1/TEMP2)*TC*100
  447.      PRINT #1, "Temperature at exit:  ";
  448.      PRINT #1, USING "####.##";TE;
  449.      PRINT #1, " Kelvin"
  450.      UE=MACH*SQR(GAMMA*R*TE)
  451.      UE=UE/.3048 : REM UNIT CONVERSION
  452.      PRINT #1, "Exit velocity:  ";
  453.      PRINT #1, USING "#.####^^^^";UE;
  454.      PRINT #1, " ft/sec."
  455.      PRINT #1, " "
  456.      PRINT #1, "Thrust at sea-level:   ";
  457.        PATM=2116.224
  458.        CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
  459.      PRINT #1, "Thrust at 10,000 ft:   ";
  460.        PATM=1455.4
  461.        CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
  462.      PRINT #1, "Thrust at 25,000 ft:   ";
  463.        PATM=785.3
  464.        CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
  465.      PRINT #1, "Thrust at 50,000 ft:   ";
  466.        PATM=242.2
  467.        CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
  468.      PRINT #1, "Thrust at 75,000 ft:   ";
  469.        PATM=73.6
  470.        CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
  471.      PRINT #1, "Thrust at 100,000 ft:  ";
  472.        PATM=22.4
  473.        CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
  474.      PRINT #1, "Thrust at 150,000 ft:  ";
  475.        PATM=3.003
  476.        CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
  477.      PRINT #1, "Thrust in a vacuum:    ";
  478.        PATM=0
  479.        CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
  480.      PRINT #1, " "
  481.      PRINT #1, " "
  482.      PRINT #1, " "
  483. 2450 PRINT #1, " "
  484. 2500 REM ************************************************************
  485.      REM *              EQUILIBRIUM FLOW CALCULATIONS               *
  486.      REM ************************************************************
  487.      CLS
  488.      IF TE<=LIMIT*100 THEN
  489.        FOR I=1 TO 7 : PRINT : NEXT I
  490.        PRINT CHR$(7)
  491.        COLOR 4
  492.        PRINT "        This engine is near a computational limit of the program."
  493.        COLOR 7 : PRINT : PRINT : PRINT
  494.        PRINT " Proceeding with the Equilibrium Flow Calculations will probably cause a"
  495.        PRINT " mathematical overflow or similar error."
  496.        PRINT
  497.        COLOR 20
  498.        PRINT " You've been warned......" : COLOR 7
  499.        PRINT
  500.        PRINT " To abort, hit return.  To continue with the Equilibrium Flow Calculations,"
  501.        PRINT " type anything else." : PRINT CHR$(7)
  502.        FOR I=1 TO 3 : PRINT : NEXT I
  503.        INPUT " ABORT <YES>";B$ : COLOR 7
  504.        IF B$<>"" THEN 2525
  505.        PRINT #1, " "
  506.        PRINT #1, TAB(16) "**********  EQUILIBRIUM FLOW CALCULATIONS  **********"
  507.        PRINT #1, TAB(16) "            -----------------------------"
  508.        PRINT #1, " "
  509.        PRINT #1, TAB(16) "Numerical Difficulties Encountered -- Not Calculated."
  510.        GOTO 2995
  511.      END IF
  512. 2525 CLS
  513.      FOR I=1 TO 11 : PRINT : NEXT I
  514.      COLOR 27
  515.      PRINT "                  Working on Equilibrium Flow Calculations."
  516.      COLOR 7
  517.      PRINT #1, " "
  518.      PRINT #1, TAB(16) "**********  EQUILIBRIUM FLOW CALCULATIONS  **********"
  519.      PRINT #1, TAB(16) "            -----------------------------"
  520.      PRINT #1, " "
  521.      R=1.9872 : REM UNIVERSAL GAS CONSTANT IN CAL/MOLE-K
  522.      REM ITERATE ON TE UNTIL ME*SC=MC*SE
  523.      REM ANALYZE TO TYPICAL POINTS AND INTERPOLATE (EXTRAPOLATE) TO
  524.      REM START IT OFF
  525.      TL=7 : TR=30
  526. 2575 REM GENERATE SE FOR THE ENDPOINTS
  527.      T=TL : GOSUB 3500 : GOSUB 5500
  528.      SLOW=MW*SC-MC*SE
  529.      T=TR : GOSUB 3500 : GOSUB 5500
  530.      SHIGH=MW*SC-MC*SE
  531.      IF SLOW*SHIGH<0 THEN 2610 : REM FAIL-SAFE
  532.      TL=INT((LIMIT+TL)/2) : TR=INT((TR+TMAX)/2) : GOTO 2575
  533. 2610 TE=FNA(SLOW,TL,SHIGH,TR,0)
  534.      T1=INT(TE) : T2=INT(TE)+1
  535.      REM ENTER A "WHILE-DO" LOOP TO ITERATE ON TE UNTIL ME*SC=MC*SE
  536.        T=0 : REM DUMMY VALUE
  537.      REM INTERPOLATE BETWEEN JANAF TABLE VALUES
  538.        FOR J=1 TO SPECIES
  539.          K(0,J)=FNA(T1,K(T1,J),T2,K(T2,J),TE)
  540.          S(0,J)=FNA(T1,S(T1,J),T2,S(T2,J),TE)
  541.          QI(0,J)=FNA(T1,QI(T1,J),T2,QI(T2,J),TE)
  542.        NEXT J
  543.      REM FIND COMPOSITION AT TE
  544.        GOSUB 3500
  545.      REM FIND SNET
  546.        GOSUB 5500
  547.        SNET=MW*SC-MC*SE
  548.        IF ABS(SNET)<.0005 THEN 2700
  549.        IF SNET>0 THEN T2=INT(TE+.5) : TR=TE : SHIGH=SNET : GOTO 2610
  550.        IF SNET<0 THEN T1=INT(TE) : TL=TE : SLOW=SNET : GOTO 2610
  551. 2700 REM SNET IS ZERO OR CLOSE TO IT, SO TE HAS BEEN FOUND
  552.      FOR I=1 TO SPECIES : XE(I)=X(I) : NEXT I : ME=MW : REM SAVE VALUES AT EXIT
  553.      REM FIND QNET FOR PRINTING PURPOSES
  554.      GOSUB 4000
  555.      T=TE
  556.      PRINT #1, "EQUILIBRIUM FLOW EXIT PROPERTIES:"
  557.      GOSUB 4500
  558.      PRINT #1, " "
  559.      PRINT #1, " "
  560.      PRINT #1, " "
  561.      PRINT #1, " "
  562.      REM FIND THRUST FOR EQUILIBRIUM FLOW
  563.      HBARTC=0 : T1=INT(TC) : T2=INT(TC)+1
  564.      FOR I=1 TO SPECIES
  565.        QI(0,I)=FNA(T1,QI(T1,I),T2,QI(T2,I),TC)
  566.      NEXT I
  567.      FOR I=1 TO SPECIES
  568.        HBARTC=HBARTC+XC(I)*(QO(I)+QI(O,I))
  569.      NEXT I
  570.      HBARTE=0 : T1=INT(TE) : T2=INT(TE)+1
  571.      FOR I=1 TO SPECIES
  572.        QI(0,I)=FNA(T1,QI(T1,I),T2,QI(T2,I),TE)
  573.      NEXT I
  574.      FOR I=1 TO SPECIES
  575.        HBARTE=HBARTE+XE(I)*(QO(I)+QI(O,I))
  576.      NEXT I
  577.      TEMP1=(2/MC)*(HBARTC-(MC/ME)*HBARTE)
  578.      TEMP1=TEMP1*4184000! : REM UNIT CONVERSION
  579.      UE=SQR(TEMP1)*3.2808399# : REM CONVERT TO FT/SEC
  580.      PRINT #1, "Average ratio of specific heats:  ";
  581.      PRINT #1, USING "##.###";GAMMA
  582.      PRINT #1, "Mass flow rate (mdot):  ";
  583.      PRINT #1, USING "#.####^^^^";MDOT;
  584.      PRINT #1, " lbm/sec."
  585.      PRINT #1, "Pressure at exit:  ";
  586.      PRINT #1, USING "#.####^^^^";PE;
  587.      PRINT #1, " atm.   (";
  588.      PRINT #1, USING "#.####^^^^";PE*14.696;
  589.      PRINT #1, " psia)"
  590.      PRINT #1, "Temperature at exit: ";
  591.      PRINT #1, USING "####.##";TE*100;
  592.      PRINT #1, " Kelvin."
  593.      PRINT #1, "Exit Velocity:  ";
  594.      PRINT #1, USING "#.####^^^^";UE;
  595.      PRINT #1, " ft/sec."
  596.      PRINT #1, " "
  597.      PRINT #1, "Thrust at sea-level:   ";
  598.        PATM=2116.224
  599.        CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
  600.      PRINT #1, "Thrust at 10,000 ft:   ";
  601.        PATM=1455.4
  602.        CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
  603.      PRINT #1, "Thrust at 25,000 ft:   ";
  604.        PATM=785.3
  605.        CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
  606.      PRINT #1, "Thrust at 50,000 ft:   ";
  607.        PATM=242.2
  608.        CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
  609.      PRINT #1, "Thrust at 75,000 ft:   ";
  610.        PATM=73.6
  611.        CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
  612.      PRINT #1, "Thrust at 100,000 ft:  ";
  613.        PATM=22.4
  614.        CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
  615.      PRINT #1, "Thrust at 150,000 ft:  ";
  616.        PATM=3.003
  617.        CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
  618.      PRINT #1, "Thrust in a vacuum:    ";
  619.        PATM=0
  620.        CALL TCALC(MDOT,UE,PE,PATM,AEXIT)
  621. 2995 PRINT #1, " "
  622.      A$="Normal Termination on "+date$+" at "+time$
  623.      CEN=(85-LEN(A$))/2
  624.      PRINT #1, TAB(CEN) A$
  625. 3000 FOR I=1 TO 7 : PRINT #1, " " : NEXT I
  626.  
  627.      REM RING BELL TO INDICATE THE END OF THE PROGRAM HAS BEEN REACHED
  628.      PRINT CHR$(7)
  629.      CLS : FOR I=1 TO 11 : PRINT : NEXT I
  630.      COLOR 27 : PRINT "                              DONE!" : COLOR 7
  631. 3025 FOR I=1 TO 10 : PRINT : NEXT I
  632.      INPUT " ANOTHER ANALYSIS <YES>";A$
  633.      IF A$="Y" THEN 3060
  634.      IF A$="y" THEN 3060
  635.      IF A$="YES" THEN 3060
  636.      IF A$="yes" THEN 3060
  637.      IF A$<>"" THEN 3100
  638. 3060 INPUT " APPEND TO THE END OF THE SAME OUTPUT FILE <YES>";A$
  639.      IF A$="Y" THEN 1345
  640.      IF A$="y" THEN 1345
  641.      IF A$="YES" THEN 1345
  642.      IF A$="yes" THEN 1345
  643.      IF A$="" THEN 1345
  644.      CLOSE #1 : GOTO 1310
  645. 3100 COLOR 1,7,7 : CLS
  646.      FOR I=1 TO 7 : PRINT : NEXT I
  647.      PRINT " Thank you for using H2O2......."
  648.      PRINT : PRINT : PRINT : PRINT
  649.      PRINT "             ......Public Domain Engineering Software by Kerry Hicks."
  650.      PRINT
  651.      FOR I=1 TO 7 : PRINT : NEXT I
  652.      PRINT " Hit Any Key to Leave H2O2......."; : COLOR 7
  653.      PRINT
  654.      PRINT
  655.      A$=""
  656. 3110 A$=INKEY$
  657.      IF A$="" THEN 3110
  658.      COLOR 7,0,0
  659.      CLS
  660.  
  661.      END
  662. 3500 REM *********************************************************
  663.      REM * SUBROUTINE FOR FINDING COMPOSITION AT ANY TEMPERATURE *
  664.      REM *********************************************************
  665.      REM NOTE THAT THE STARTING VALUES OF N AND N1 CAN BE MODIFIED
  666.      REM FOR EACH PROBLEM TO SPEED UP THE PROGRAM
  667.      NN=NN*1.001
  668.      N=NN/2 : NN=NN*1.5 : NUMIT=0
  669. 3535 IF ABS(N-NN)<=.00005 THEN 3725
  670.        N=(N+NN)/2
  671.        NP=(N/P)^.5
  672.      REM BISECTION ROUTINE ON N(1) -- H2 IN PROBLEM 19
  673.        XL=1.0E-30 : XR=MH2*1.01
  674.      REM FIND YL
  675.        B=FNBX(K(T,3),K(T,6),XL,NP)
  676.        N(2)=FNO2(K(T,4),XL,B,NP)
  677.        IF N(2)<1.0e-37 THEN N(2)=1.0E-30
  678.        N(3)=FNW(K(T,3),XL,N(2),NP) : N(5)=FNO(K(T,5),N(2),NP)
  679.        N(6)=FNOH(K(T,6),XL,N(2)) : YL=2*N(2)+N(3)+N(5)+N(6)-2
  680. 3590 N(1)=(XL+XR)/2
  681.      NUMIT=NUMIT+1 : IF NUMIT<5000 THEN 3660
  682.        PRINT CHR$(7)
  683.        PRINT " Program seems to be failing -- input data may be at fault or"
  684.        PRINT " the engine may be so extreme that it exceeds the limits of this"
  685.        PRINT " program.  ";
  686.        COLOR 4
  687.        PRINT "(Is your engine REALISTIC?).";
  688.        COLOR 7
  689.        PRINT "  To abort";CHR$(44);" hit return. "
  690.        PRINT " To continue this for another 5000 iterations";CHR$(44);" type anything else."
  691.        INPUT " ABORT <YES>";B$ : NUMIT=0
  692.        IF B$<>"" THEN 3660
  693.        GOTO 6555
  694. 3660 REM FIND YM
  695.     B=FNBX(K(T,3),K(T,6),N(1),NP)
  696.     N(2)=FNO2(K(T,4),N(1),B,NP)
  697.     IF N(2)<1.0e-37 THEN N(2)=1.0E-30
  698.     N(3)=FNW(K(T,3),N(1),N(2),NP) : N(5)=FNO(K(T,5),N(2),NP)
  699.     N(6)=FNOH(K(T,6),N(1),N(2)) : YM=2*N(2)+N(3)+N(5)+N(6)-2
  700.        IF (XR-XL)/2 <.00001 THEN 3700
  701.          IF YM*YL > 0 THEN XL=N(1) : GOTO 3590
  702.          XR=N(1) : GOTO 3590
  703. 3700   N(4)=FNH(K(T,4),N(1),NP)
  704.      REM FORM NEW ESTIMATE OF N -- CALL IT NN
  705.        NN=0
  706.        FOR I=1 TO SPECIES : NN=NN+N(I) : NEXT I
  707.      GOTO 3535
  708. 3725 REM NOW THAT WE HAVE N, FORM MOLE FRACTIONS -- X(I)'S
  709.      FOR I=1 TO SPECIES : X(I)=N(I)/NN : NEXT I
  710.      REM FIND MOLECULAR WEIGHT
  711.      GOSUB 5000
  712. 3745 RETURN
  713. 4000 REM ***********************************************************
  714.      REM *   SUBROUTINE FOR FINDING Q3, QIN, QNET AT A GIVEN TEMP  *
  715.      REM ***********************************************************
  716.      QIN=0 : Q3=0
  717.      FOR I=1 TO SPECIES
  718.        QIN=QIN+N(I)*QI(T,I)
  719.        Q3=Q3+N(I)*QO(I)
  720.      NEXT I
  721.      QIN=QIN+Q : QNET=QIN+Q3 : Q3=-Q3
  722. 4045 RETURN
  723. 4500 REM ***********************************************************
  724.      REM *            SUBROUTINE TO PRINT REACTION DATA            *
  725.      REM ***********************************************************
  726.      PRINT #1, "Temperature=";
  727.      PRINT #1, USING "####.##";T*100;
  728.      PRINT #1, " Kelvin"
  729.      PRINT #1, "Reaction Equation Coefficients and Mole Fractions:"
  730.      PRINT #1, " "
  731.      FOR I=1 TO SPECIES
  732.      IF X(I)<=1E-30 THEN
  733.        X(I)=0
  734.        N(I)=0
  735.      END IF
  736.      PRINT #1, N$(I),"N=";
  737.      PRINT #1, USING "#.####^^^^";N(I);
  738.      PRINT #1, TAB(45)"X=";
  739.      PRINT #1, USING "#.####^^^^";X(I)
  740.      NEXT I
  741.      PRINT #1, " "
  742.      PRINT #1, "                      Total N=";
  743.      PRINT #1, USING "#.####^^^^";NN
  744.      PRINT #1, "                      Molecular Weight of Mixture=";
  745.      PRINT #1, USING "#.####^^^^";MW
  746.      PRINT #1, "                      Qin=";
  747.      PRINT #1, USING "+#.####^^^^";QIN;
  748.      PRINT #1, " kcal"
  749.      PRINT #1, "                      Qout=";
  750.      PRINT #1, USING "+#.####^^^^";Q3;
  751.      PRINT #1, " kcal"
  752.      PRINT #1, "                      Qnet=";
  753.      PRINT #1, USING "+#.####^^^^";QNET;
  754.      PRINT #1, " kcal"
  755.      PRINT #1, "                      P=";
  756.      PRINT #1, USING "#.####^^^^";PE;
  757.      PRINT #1, " atm"
  758.      PRINT #1, "                      S=";
  759.      PRINT #1, USING "#.####^^^^";SE;
  760.      PRINT #1, " cal/(mole K)"
  761. 4680 RETURN
  762. 5000 REM *************************************************************
  763.      REM *                MOLECULAR WEIGHT                           *
  764.      REM *************************************************************
  765.      MW=0
  766.      FOR I=1 TO SPECIES
  767.        MW=MW+X(I)*M(I)
  768.      NEXT I
  769. 5035 RETURN
  770. 5500 REM *************************************************************
  771.      REM *                   SE CALCULATION                          *
  772.      REM *************************************************************
  773.      SE=0
  774.      FOR I=1 TO SPECIES
  775.        REM PREVENT OVERFLOW
  776.        IF X(I)<1E-37 THEN X(I)=1E-30
  777.        SE=SE+(X(I)*(S(T,I)-R*(LOG(PE)+LOG(X(I)))))
  778.      NEXT I
  779. 5545 RETURN
  780. 6000 REM **************************************************************
  781.      REM *            SUBROUTINE TO FIND EXIT MACH NUMBER             *
  782.      REM **************************************************************
  783.      MLOW=1 : MHIGH=50
  784. 6020 ARHIGH=FNAR(MHIGH,GC)
  785. 6025 ARLOW=FNAR(MLOW,GC)
  786.      MACH=(MLOW+MHIGH)/2
  787.      ARMID=FNAR(MACH,GC)
  788.      IF ABS(AREAR-ARMID)<.0005 THEN 6120
  789.        NUMIT=NUMIT+1
  790.        IF NUMIT<5000 THEN 6110
  791.           PRINT " Program appears to be failing to find an exit mach number"
  792.           PRINT " between 1 and 50.  If you are SURE your engine is REALISTIC";CHR$(44)
  793.           PRINT " input an upper search limit for the mach number.  (This limit"
  794.           PRINT " will be used only for this iteration.)  To abort this run";CHR$(44);" enter"
  795.           PRINT " a negative value.  ";
  796.           COLOR 4
  797.           PRINT "(WARNING -- RAISING THE LIMIT TOO HIGH CAN "
  798.           PRINT " CAUSE THE PROGRAM TO CRASH!)" : COLOR 7 : PRINT
  799.           INPUT " New upper limit on exit mach number";MHIGH
  800.       IF MHIGH<=0 THEN COLOR 7,0,0 : GOTO 6555
  801.           NUMIT=0 : MLOW=1 : GOTO 6020
  802. 6110   IF AREAR-ARMID>0 THEN MLOW=MACH : GOTO 6025
  803.        IF AREAR-ARMID<0 THEN MHIGH=MACH : ARHIGH=FNAR(MHIGH,GC) : GOTO 6020
  804. 6120 REM FOUND EXIT MACH NUMBER
  805. 6125 RETURN
  806.  
  807. OOPS:
  808.      REM ******************************************************************
  809.      REM *      DAMN -- SOMETHING WENT WRONG ABORT ROUTINE           *
  810.      REM ******************************************************************
  811.      REM
  812.      PRINT CHR$(7) : CLS
  813.      COLOR 20
  814.      PRINT "                  SOMETHING TERRIBLE HAS GONE WRONG!"
  815.      COLOR 7
  816.      PRINT
  817.      IERROR=ERR
  818.      IF IERROR=64 OR IERROR=52 THEN
  819.     PRINT " The error trapping routine indicates that an error has occurred while"
  820.     PRINT " attempting to open the output file.  Names must be legal DOS file names."
  821.     PRINT
  822.     RESUME 1310
  823.      END IF
  824.      IF IERROR=61 THEN
  825.        PRINT " Your disk is full!  You will have to start this run over with a new"
  826.        PRINT " data disk!"
  827.        CLOSE #1
  828.        RESUME 1310
  829.      END IF
  830.      IF IERROR=57 OR IERROR=68 OR IERROR=71 THEN
  831.     PRINT " Check output device/drive!"
  832.     RESUME 1310
  833.      END IF
  834.      IF IERROR=72 THEN
  835.     PRINT " Media Error!  Bad Disk?"
  836.     CLOSE #1
  837.     RESUME 1310
  838.      END IF
  839.      PRINT " Whatever it was that caused this error was severe enough to cause"
  840.      PRINT " a fatal BASIC error.  BASIC Error Number "; IERROR; " on or about line"
  841.      PRINT " number/line label ";ERL;" seems to have been at fault." : PRINT
  842.      IF IERROR=5 THEN
  843.     PRINT " If this error occurred during the Equilibrium Flow Calculations, then"
  844.     PRINT " the thermochemistry of your engine prevents these calculations."
  845.     PRINT
  846.      END IF
  847. 6555 PRINT " Do you want a copy of the major variables in use to be dumped to "
  848.      INPUT " your output file <YES>";A$
  849.      IF A$="Y" THEN 6590
  850.      IF A$="y" THEN 6590
  851.      IF A$="YES" THEN 6590
  852.      IF A$="yes" THEN 6590
  853.      IF A$<>"" THEN
  854.     PRINT #1, " "
  855.     PRINT #1, " "
  856.     A$="Study ABORTED on "+date$+" at "+time$
  857.     CEN=(85-LEN(A$))/2
  858.     PRINT #1, TAB(CEN) A$
  859.     FOR I=1 TO 7 : PRINT #1, " " : NEXT I
  860.     GOTO 3025
  861.      END IF
  862. 6590 PRINT #1, " " : PRINT #1, " "
  863.      PRINT #1, TAB(16) "OOPS......SOMETHING WHEN WRONG......VARIABLES IN USE:"
  864.      PRINT #1, "TC=";TC
  865.      PRINT #1, "TE=";TE
  866.      PRINT #1, "T=";T
  867.      GOSUB 4500
  868.      PRINT #1, " " : PRINT #1, " " : PRINT #1, " "
  869.      A$="Study ABORTED on "+date$+" at "+time$
  870.      IF IERROR<>0 THEN
  871.     A$=A$+" due to BASIC Error Number "+STR$(IERROR)
  872.      END IF
  873.      CEN=(85-LEN(A$))/2
  874.      PRINT #1, TAB(CEN) A$;
  875.  
  876.      FOR I=1 TO 7 : PRINT #1, " " : NEXT I
  877. 6615 GOTO 3025
  878.  
  879. SUB TCALC(MDOT,UE,PE,PATM,AEXIT) STATIC
  880.      THRUST=(MDOT*UE)/32.17+(PE*2116.224-PATM)*AEXIT
  881.      PRINT #1, USING "+#.####^^^^";THRUST;
  882.      PRINT #1, " lbf."
  883.      IF THRUST<0 THEN
  884.        PRINT #1, "(Negative thrust -- out of the engine's operating range.)"
  885.      END IF
  886. PRINT #1, " "
  887. END SUB
  888.  
  889. REM  DATA STATEMENTS FROM HERE DOWN REPLACE THE OLD DATA FILE
  890. DATA 0.0,0.0,-57.798,52.102,59.559,9.330
  891. DATA "Diatomic Hydrogen",2.0158
  892. DATA 0.0,-1.265,24.387,5.393
  893. DATA 0.0,-0.662,28.520,6.518
  894. DATA 0.0,0.013,31.251,6.894
  895. DATA 0.0,0.707,33.247,6.975
  896. DATA 0.0,1.406,34.806,6.993
  897. DATA 0.0,2.106,36.082,7.009
  898. DATA 0.0,2.808,37.165,7.036
  899. DATA 0.0,3.514,38.107,7.087
  900. DATA 0.0,4.226,38.946,7.148
  901. DATA 0.0,4.944,39.702,7.219
  902. DATA 0.0,5.670,40.394,7.300
  903. DATA 0.0,6.404,41.033,7.390
  904. DATA 0.0,7.148,41.628,7.490
  905. DATA 0.0,7.902,42.187,7.600
  906. DATA 0.0,8.668,42.716,7.720
  907. DATA 0.0,9.446,43.217,7.823
  908. DATA 0.0,10.233,43.695,7.921
  909. DATA 0.0,11.030,44.150,8.016
  910. DATA 0.0,11.836,44.586,8.108
  911. DATA 0.0,12.651,45.004,8.195
  912. DATA 0.0,13.475,45.406,8.279
  913. DATA 0.0,14.307,45.793,8.358
  914. DATA 0.0,15.146,46.166,8.434
  915. DATA 0.0,15.993,46.527,8.506
  916. DATA 0.0,16.848,46.875,8.575
  917. DATA 0.0,17.708,47.213,8.639
  918. DATA 0.0,18.575,47.540,8.700
  919. DATA 0.0,19.448,47.857,8.757
  920. DATA 0.0,20.326,48.166,8.810
  921. DATA 0.0,21.210,48.465,8.859
  922. DATA 0.0,22.098,48.756,8.891
  923. DATA 0.0,22.992,49.040,8.962
  924. DATA 0.0,23.891,49.317,9.012
  925. DATA 0.0,24.794,49.586,9.061
  926. DATA 0.0,25.703,49.850,9.110
  927. DATA 0.0,26.616,50.107,9.158
  928. DATA 0.0,27.535,50.359,9.205
  929. DATA 0.0,28.457,50.605,9.252
  930. DATA 0.0,29.385,50.846,9.297
  931. DATA 0.0,30.317,51.082,9.342
  932. DATA 0.0,31.253,51.313,9.386
  933. DATA 0.0,32.194,51.540,9.429
  934. DATA 0.0,33.139,51.762,9.472
  935. DATA 0.0,34.088,51.980,9.514
  936. DATA 0.0,35.042,52.194,9.555
  937. DATA 0.0,35.999,52.405,9.595
  938. DATA 0.0,36.961,52.612,9.634
  939. DATA 0.0,37.926,52.815,9.673
  940. DATA 0.0,38.895,53.015,9.711
  941. DATA 0.0,39.868,53.211,9.748
  942. DATA 0.0,40.845,53.405,9.785
  943. DATA 0.0,41.825,53.595,9.822
  944. DATA 0.0,42.809,53.783,9.859
  945. DATA 0.0,43.797,53.967,9.895
  946. DATA 0.0,44.788,54.149,9.930
  947. DATA 0.0,45.783,54.328,9.965
  948. DATA 0.0,46.781,54.505,10.000
  949. DATA 0.0,47.783,54.679,10.034
  950. DATA 0.0,48.788,54.851,10.067
  951. DATA 0.0,49.796,55.020,10.100
  952. DATA "Diatomic Oxygen",31.9988
  953. DATA 0.0,-1.362,41.522,6.741
  954. DATA 0.0,-0.682,46.233,6.871
  955. DATA 0.0,0.013,49.047,7.023
  956. DATA 0.0,0.724,51.091,7.196
  957. DATA 0.0,1.455,52.722,7.431
  958. DATA 0.0,2.210,54.098,7.670
  959. DATA 0.0,2.988,55.297,7.883
  960. DATA 0.0,3.786,56.361,8.063
  961. DATA 0.0,4.600,57.320,8.212
  962. DATA 0.0,5.427,58.192,8.336
  963. DATA 0.0,6.266,58.991,8.439
  964. DATA 0.0,7.114,59.729,8.527
  965. DATA 0.0,7.971,60.415,8.604
  966. DATA 0.0,8.835,61.055,8.674
  967. DATA 0.0,9.706,61.656,8.738
  968. DATA 0.0,10.583,62.222,8.800
  969. DATA 0.0,11.465,62.757,8.858
  970. DATA 0.0,12.354,63.265,8.916
  971. DATA 0.0,13.249,63.749,8.973
  972. DATA 0.0,14.149,64.210,9.029
  973. DATA 0.0,15.054,64.652,9.084
  974. DATA 0.0,15.966,65.076,9.139
  975. DATA 0.0,16.882,65.483,9.194
  976. DATA 0.0,17.804,65.876,9.248
  977. DATA 0.0,18.732,66.254,9.301
  978. DATA 0.0,19.664,66.620,9.354
  979. DATA 0.0,20.602,66.974,9.405
  980. DATA 0.0,21.545,67.317,9.455
  981. DATA 0.0,22.493,67.650,9.503
  982. DATA 0.0,23.446,67.973,9.551
  983. DATA 0.0,24.403,68.287,9.596
  984. DATA 0.0,25.365,68.592,9.640
  985. DATA 0.0,26.331,68.889,9.682
  986. DATA 0.0,27.307,69.179,9.723
  987. DATA 0.0,28.276,69.461,9.762
  988. DATA 0.0,29.254,69.737,9.799
  989. DATA 0.0,30.236,70.006,9.835
  990. DATA 0.0,31.221,70.269,9.869
  991. DATA 0.0,32.209,70.525,9.901
  992. DATA 0.0,33.201,70.776,9.932
  993. DATA 0.0,34.196,71.022,9.961
  994. DATA 0.0,35.193,71.262,9.988
  995. DATA 0.0,36.193,71.498,10.015
  996. DATA 0.0,37.196,71.728,10.039
  997. DATA 0.0,38.201,71.954,10.062
  998. DATA 0.0,39.208,72.176,10.084
  999. DATA 0.0,40.218,72.393,10.104
  1000. DATA 0.0,41.229,72.606,10.123
  1001. DATA 0.0,42.242,72.814,10.140
  1002. DATA 0.0,43.257,73.019,10.156
  1003. DATA 0.0,44.274,73.221,10.172
  1004. DATA 0.0,45.292,73.418,10.187
  1005. DATA 0.0,46.311,73.613,10.200
  1006. DATA 0.0,47.332,73.803,10.213
  1007. DATA 0.0,48.353,73.991,10.225
  1008. DATA 0.0,49.377,74.175,10.237
  1009. DATA 0.0,50.401,74.356,10.247
  1010. DATA 0.0,51.426,74.535,10.258
  1011. DATA 0.0,52.452,74.710,10.267
  1012. DATA 0.0,53.479,74.883,10.276
  1013. DATA "Water          ",18.0152
  1014. DATA 123.600,-1.581,36.396,7.961
  1015. DATA 60.792,-0.784,41.916,7.969
  1016. DATA 39.786,0.015,45.155,8.027
  1017. DATA 29.240,0.825,47.484,8.186
  1018. DATA 22.886,1.654,49.334,8.415
  1019. DATA 18.633,2.509,50.891,8.676
  1020. DATA 15.583,3.390,52.249,8.954
  1021. DATA 13.289,4.300,53.464,9.246
  1022. DATA 11.498,5.240,54.570,9.547
  1023. DATA 10.062,6.209,55.592,9.851
  1024. DATA 8.883,7.210,56.545,10.152
  1025. DATA 7.899,8.240,57.441,10.444
  1026. DATA 7.064,9.298,58.288,10.723
  1027. DATA 6.347,10.384,59.092,10.987
  1028. DATA 5.725,11.495,59.859,11.233
  1029. DATA 5.180,12.630,60.591,11.462
  1030. DATA 4.699,13.787,61.293,11.674
  1031. DATA 4.270,14.964,61.965,11.869
  1032. DATA 3.886,16.160,62.612,12.048
  1033. DATA 3.540,17.373,63.234,12.214
  1034. DATA 3.227,18.602,63.834,12.366
  1035. DATA 2.942,19.846,64.412,12.505
  1036. DATA 2.682,21.103,64.971,12.634
  1037. DATA 2.443,22.372,65.511,12.753
  1038. DATA 2.224,23.653,66.034,12.863
  1039. DATA 2.021,24.945,66.541,12.965
  1040. DATA 1.833,26.246,67.032,13.059
  1041. DATA 1.658,27.556,67.508,13.146
  1042. DATA 1.495,28.875,67.971,13.228
  1043. DATA 1.343,30.201,68.421,13.304
  1044. DATA 1.201,31.535,68.858,13.374
  1045. DATA 1.067,32.876,69.284,13.441
  1046. DATA 0.942,34.223,69.698,13.503
  1047. DATA 0.824,35.577,70.102,13.562
  1048. DATA 0.712,36.936,70.496,13.617
  1049. DATA 0.607,38.300,70.881,13.669
  1050. DATA 0.507,39.669,71.256,13.718
  1051. DATA 0.413,41.043,71.622,13.764
  1052. DATA 0.323,42.422,71.980,13.808
  1053. DATA 0.238,43.805,72.331,13.850
  1054. DATA 0.157,45.192,72.673,13.890
  1055. DATA 0.079,46.583,73.008,13.927
  1056. DATA 0.005,47.977,73.336,13.963
  1057. DATA -0.065,49.375,73.658,13.997
  1058. DATA -0.133,50.777,73.973,14.030
  1059. DATA -0.197,52.181,74.281,14.061
  1060. DATA -0.259,53.589,74.584,14.091
  1061. DATA -0.319,55.000,74.881,14.120
  1062. DATA -0.376,56.413,75.172,14.148
  1063. DATA -0.430,57.829,75.459,14.174
  1064. DATA -0.483,59.248,75.740,14.201
  1065. DATA -0.534,60.669,76.016,14.228
  1066. DATA -0.583,62.093,76.287,14.254
  1067. DATA -0.630,63.520,76.553,14.279
  1068. DATA -0.675,64.949,76.816,14.303
  1069. DATA -0.719,66.381,77.074,14.328
  1070. DATA -0.762,67.815,77.327,14.351
  1071. DATA -0.803,69.251,77.577,14.375
  1072. DATA -0.842,70.690,77.823,14.398
  1073. DATA -0.880,72.131,78.065,14.422
  1074. DATA "Monatomic Hydrogen",1.0079
  1075. DATA -110.96,-0.984,21.965,4.968
  1076. DATA -54.324,-0.488,25.408,4.968
  1077. DATA -35.378,0.009,27.423,4.968
  1078. DATA -25.877,0.506,28.852,4.968
  1079. DATA -20.159,1.003,29.961,4.968
  1080. DATA -16.337,1.500,30.867,4.968
  1081. DATA -13.599,1.996,31.632,4.968
  1082. DATA -11.540,2.493,32.296,4.968
  1083. DATA -9.934,2.990,32.881,4.968
  1084. DATA -8.646,3.487,33.404,4.968
  1085. DATA -7.590,3.984,33.878,4.968
  1086. DATA -6.707,4.481,34.310,4.968
  1087. DATA -5.958,4.977,34.708,4.968
  1088. DATA -5.315,5.474,35.076,4.968
  1089. DATA -4.757,5.971,35.419,4.968
  1090. DATA -4.267,6.468,35.739,4.968
  1091. DATA -3.834,6.965,36.041,4.968
  1092. DATA -3.448,7.461,36.325,4.968
  1093. DATA -3.102,7.958,36.593,4.968
  1094. DATA -2.791,8.455,36.848,4.968
  1095. DATA -2.508,8.952,37.090,4.968
  1096. DATA -2.251,9.449,37.322,4.968
  1097. DATA -2.016,9.945,37.542,4.968
  1098. DATA -1.800,10.442,37.754,4.968
  1099. DATA -1.601,10.939,37.957,4.968
  1100. DATA -1.418,11.436,38.152,4.968
  1101. DATA -1.247,11.933,38.339,4.968
  1102. DATA -1.089,12.430,38.520,4.968
  1103. DATA -0.941,12.926,38.694,4.968
  1104. DATA -0.803,13.423,38.862,4.968
  1105. DATA -0.674,13.920,39.025,4.968
  1106. DATA -0.553,14.417,39.183,4.968
  1107. DATA -0.439,14.914,39.336,4.968
  1108. DATA -0.332,15.410,39.484,4.968
  1109. DATA -0.231,15.907,39.628,4.968
  1110. DATA -0.135,16.404,39.768,4.968
  1111. DATA -0.044,16.901,39.904,4.968
  1112. DATA 0.041,17.398,40.037,4.968
  1113. DATA 0.123,17.895,40.166,4.968
  1114. DATA 0.200,18.391,40.292,4.968
  1115. DATA 0.274,18.888,40.414,4.968
  1116. DATA 0.344,19.385,40.534,4.968
  1117. DATA 0.412,19.882,40.651,4.968
  1118. DATA 0.476,20.379,40.765,4.968
  1119. DATA 0.537,20.875,40.877,4.968
  1120. DATA 0.595,21.372,40.986,4.968
  1121. DATA 0.651,21.869,41.093,4.968
  1122. DATA 0.705,22.366,41.198,4.968
  1123. DATA 0.757,22.863,41.300,4.968
  1124. DATA 0.806,23.359,41.400,4.968
  1125. DATA 0.854,23.856,41.499,4.968
  1126. DATA 0.900,24.353,41.595,4.968
  1127. DATA 0.944,24.850,41.690,4.968
  1128. DATA 0.986,25.347,41.783,4.968
  1129. DATA 1.027,25.844,41.874,4.968
  1130. DATA 1.066,26.340,41.963,4.968
  1131. DATA 1.104,26.837,42.051,4.968
  1132. DATA 1.141,27.334,42.138,4.968
  1133. DATA 1.177,27.831,42.223,4.968
  1134. DATA 1.211,28.328,42.306,4.968
  1135. DATA "Monatomic Oxygen",15.9994
  1136. DATA -126.73,-1.080,32.466,5.666
  1137. DATA -61.992,-0.523,36.340,5.434
  1138. DATA -40.334,0.010,38.501,5.235
  1139. DATA -29.473,0.528,39.991,5.135
  1140. DATA -22.940,1.038,41.131,5.081
  1141. DATA -18.574,1.544,42.054,5.049
  1142. DATA -15.449,2.048,42.831,5.029
  1143. DATA -13.101,2.550,43.501,5.015
  1144. DATA -11.272,3.052,44.092,5.006
  1145. DATA -9.807,3.552,44.619,4.999
  1146. DATA -8.606,4.051,45.095,4.994
  1147. DATA -7.604,4.551,45.529,4.990
  1148. DATA -6.755,5.049,45.928,4.987
  1149. DATA -6.027,5.548,46.298,4.984
  1150. DATA -5.395,6.046,46.642,4.982
  1151. DATA -4.842,6.544,46.963,4.981
  1152. DATA -4.353,7.042,47.265,4.979
  1153. DATA -3.918,7.540,47.550,4.979
  1154. DATA -3.529,8.038,47.819,4.978
  1155. DATA -3.178,8.536,48.074,4.978
  1156. DATA -2.860,9.034,48.317,4.978
  1157. DATA -2.571,9.532,48.549,4.979
  1158. DATA -2.307,10.029,48.770,4.980
  1159. DATA -2.065,10.527,48.982,4.981
  1160. DATA -1.842,11.026,49.185,4.984
  1161. DATA -1.636,11.524,49.381,4.986
  1162. DATA -1.446,12.023,49.569,4.990
  1163. DATA -1.268,12.522,49.751,4.994
  1164. DATA -1.103,13.022,49.926,4.999
  1165. DATA -0.949,13.522,50.096,5.004
  1166. DATA -0.805,14.023,50.260,5.010
  1167. DATA -0.670,14.524,50.419,5.017
  1168. DATA -0.543,15.026,50.573,5.025
  1169. DATA -0.423,15.529,50.724,5.033
  1170. DATA -0.310,16.033,50.870,5.041
  1171. DATA -0.204,16.537,51.012,5.050
  1172. DATA -0.103,17.043,51.150,5.060
  1173. DATA -0.007,17.549,51.285,5.070
  1174. DATA 0.084,18.057,51.417,5.081
  1175. DATA 0.170,18.565,51.546,5.091
  1176. DATA 0.252,19.075,51.672,5.103
  1177. DATA 0.330,19.586,51.795,5.114
  1178. DATA 0.404,20.098,51.915,5.126
  1179. DATA 0.475,20.611,52.033,5.138
  1180. DATA 0.543,21.126,52.149,5.150
  1181. DATA 0.608,21.641,52.262,5.162
  1182. DATA 0.671,22.158,52.373,5.174
  1183. DATA 0.730,22.676,52.482,5.186
  1184. DATA 0.788,23.195,52.589,5.198
  1185. DATA 0.843,23.715,52.695,5.210
  1186. DATA 0.895,24.237,52.798,5.222
  1187. DATA 0.946,24.760,52.899,5.234
  1188. DATA 0.995,25.284,52.999,5.246
  1189. DATA 1.042,25.809,53.097,5.258
  1190. DATA 1.088,26.335,53.194,5.269
  1191. DATA 1.132,26.863,53.289,5.280
  1192. DATA 1.174,27.392,53.383,5.292
  1193. DATA 1.215,27.921,53.475,5.302
  1194. DATA 1.254,28.452,53.565,5.313
  1195. DATA 1.292,28.984,53.655,5.323
  1196. DATA "Hydroxyl      ",17.0074
  1197. DATA -19.464,-1.451,35.852,7.567
  1198. DATA -9.361,-0.707,41.021,7.309
  1199. DATA -5.964,0.013,43.962,7.134
  1200. DATA -4.264,0.724,46.006,7.077
  1201. DATA -3.244,1.430,47.582,7.049
  1202. DATA -2.565,2.134,48.867,7.053
  1203. DATA -2.082,2.841,49.956,7.087
  1204. DATA -1.720,3.553,50.906,7.148
  1205. DATA -1.441,4.272,51.753,7.232
  1206. DATA -1.218,5.000,52.520,7.329
  1207. DATA -1.037,5.738,53.223,7.436
  1208. DATA -0.887,6.487,53.875,7.548
  1209. DATA -0.760,7.247,54.483,7.657
  1210. DATA -0.652,8.018,55.055,7.764
  1211. DATA -0.559,8.800,55.594,7.866
  1212. DATA -0.477,9.591,56.105,7.963
  1213. DATA -0.406,10.392,56.590,8.052
  1214. DATA -0.343,11.202,57.053,8.136
  1215. DATA -0.286,12.019,57.495,8.213
  1216. DATA -0.236,12.844,57.918,8.285
  1217. DATA -0.190,13.676,58.324,8.352
  1218. DATA -0.149,14.514,58.714,8.414
  1219. DATA -0.111,15.358,59.089,8.470
  1220. DATA -0.077,16.208,59.451,8.523
  1221. DATA -0.046,17.063,59.800,8.573
  1222. DATA -0.017,17.923,60.137,8.621
  1223. DATA 0.010,18.787,60.463,8.664
  1224. DATA 0.034,19.655,60.779,8.704
  1225. DATA 0.057,20.528,61.085,8.742
  1226. DATA 0.078,21.404,61.382,8.778
  1227. DATA 0.098,22.283,61.670,8.811
  1228. DATA 0.116,23.166,61.951,8.843
  1229. DATA 0.133,24.052,62.223,8.873
  1230. DATA 0.150,24.940,62.488,8.901
  1231. DATA 0.165,25.832,62.747,8.929
  1232. DATA 0.179,26.726,62.999,8.955
  1233. DATA 0.192,27.623,63.244,8.979
  1234. DATA 0.205,28.522,63.484,9.002
  1235. DATA 0.216,29.423,63.718,9.024
  1236. DATA 0.227,30.327,63.947,9.046
  1237. DATA 0.238,31.233,64.171,9.067
  1238. DATA 0.248,32.140,64.389,9.088
  1239. DATA 0.257,33.050,64.603,9.107
  1240. DATA 0.266,33.962,64.813,9.125
  1241. DATA 0.275,34.875,65.018,9.143
  1242. DATA 0.282,35.790,65.219,9.161
  1243. DATA 0.290,36.707,65.417,9.177
  1244. DATA 0.297,37.626,65.610,9.193
  1245. DATA 0.304,38.546,65.800,9.209
  1246. DATA 0.311,39.467,65.986,9.225
  1247. DATA 0.317,40.391,66.169,9.243
  1248. DATA 0.323,41.316,66.348,9.260
  1249. DATA 0.328,42.243,66.525,9.276
  1250. DATA 0.333,43.171,66.699,9.290
  1251. DATA 0.339,44.101,66.869,9.306
  1252. DATA 0.343,45.032,67.037,9.320
  1253. DATA 0.348,45.965,67.202,9.331
  1254. DATA 0.352,46.898,67.364,9.340
  1255. DATA 0.357,47.833,67.524,9.354
  1256. DATA 0.361,48.769,67.681,9.370
  1257.